package com.miku.project.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.miku.mikuapicommon.model.entity.ProductOrder;
import com.miku.project.model.vo.ProductOrderVo;
import com.miku.project.model.vo.UserVO;

import javax.servlet.http.HttpServletRequest;


/**
* @author ThinkBook
* @description 针对表【product_order(商品订单)】的数据库操作Service
* @createDate 2024-06-20 18:59:14
*/
public interface ProductOrderService extends IService<ProductOrder> {

    /**
     *获取商品订单
     * @param productId
     * @param loginUser
     * @param payType
     * @return
     * @param {@link ProductOrderVo}
     */
    ProductOrderVo  getProductOrder(Long productId, UserVO loginUser, String payType);

    /**
     * 保存产品订单
     * @param productId
     * @param loginUser
     * @return
     * @param
     */
    ProductOrderVo  saveProductOrder(Long productId, UserVO loginUser);

    /**
     * 更新产品订单
     * @param productOrder
     * @return
     */
    boolean updateProductOrder(ProductOrder productOrder);

    /**
     * 通过订单号获取产品订单
     * @param orderNo
     * @return
     */
    ProductOrder getProductOrderByOutTradeNo(String orderNo);

    /**
     * 根据订单号修改订单状态
     * @param orderNo
     * @param orderStatus
     * @return
     */
    boolean updateOrderStatusByOrderNo(String orderNo, String orderStatus);

    /**
     * 付款通知
     * 处理付款通知
     * @param notifyDate
     * @param request
     * @return
     */
    String doPaymentNotify(String notifyDate, HttpServletRequest request);

    public void closedOrderByOrderNo(String orderNo);
    /**
     * 检查订单状态(微信查单接口)
     * 删除超时订单
     * @param productOrder
     */
    void processingTimedOutOrders(ProductOrder productOrder);
}
